package pe.edu.upla.lamerced.service;

import java.util.List;

import pe.edu.upla.lamerced.bean.Detallefactura;
import pe.edu.upla.lamerced.bean.Factura;
import pe.edu.upla.lamerced.bean.Habitacion;
import pe.edu.upla.lamerced.bean.Hospedaje;

public interface HospedajeService {

	public static final int ESTADO_RESERVA = 1 ;
	public static final int ESTADO_RESERVA_FINALIZADA = 0 ;
	public static final int ESTADO_HOSPEDAJE = 2 ;
	public static final int ESTADO_HOSPEDAJE_FINALIZADO = 3 ;
	/**
     * La reserva no modifica el estado de la habitacion porque se pueden hacer varias reservas a futuro
     * @param hospedaje
     */
	public void registrarReserva(Hospedaje hospedaje);
	public void registrarHospedaje(Hospedaje hospedaje);
	public void registrarHospedajeReserva(Hospedaje hospedaje);
	public Hospedaje obtenerReserva(Integer idhospedaje);
	public Hospedaje obtenerHospedaje(Integer idhospedaje);
	public List<Hospedaje> listarRserva(Hospedaje hospedaje);
	public void finalizarreserva(Hospedaje hospedaje);
	public List<Hospedaje> listaHospedajes(String string);
	public List<Hospedaje> listaHospedajesActivos();
	/**
	 * lista las habitaciones que no estan reservadas en la fechaindicada
	 */
	public List<Habitacion> buscarHabitacionesdisponibles(Hospedaje h);
	public void anularReserva(int codigo);
	public void registrarFactura(Factura fac, List<Detallefactura> lisDet);

    /**
     * Obtiene la reserva que se halla realizado en el dia indicado
     * utilizarlo para validar que no se registren hospedajes ni reservas
     * para una habitacion cuando ya esta reservada, a menos que quien se hospede
     * sea quien la reservo.
     * @param fecha fecha para verificar reserva
     *  @param habitacion id de habitacion
     * @return hospedaje
     */
   public Hospedaje obtenerReservaExacta(String fecha,String habitacion);

   /**
    * Obtiene el hospedaje que se halla realizado en el dia indicado
     * utilizarlo para validar que no se registren hospedajes ni reservas
     * para una habitacion cuando ya esta en hospedaje
     * @param fecha fecha para verificar el hospedaje
    *  @param habitacion id de habitacion
    * @return hospedaje
    */
   public Hospedaje obtenerHospedajeExacto(String fecha,String habitacion);

   public void anularHospedaje(int cod);
	
}
